发那科通信之MODBUSTCP(一) 您所在的位置:网站首页 fanuc jog013 发那科通信之MODBUSTCP(一)

发那科通信之MODBUSTCP(一)

2024-07-10 13:49| 来源: 网络整理| 查看: 265

        我们搞工控的,每次用到新的知识点难免会遇到一些挫折。

        今年碰巧项目用到发那科机器人165F型,项目中机器人与PLC通信必然少不了的,记得之前做项目用到川崎的机器人,当时自己通信的知识不是太好,当时机器人与欧姆龙PLC之间的交互就采用的IO方式,也是第一次用到二进制转换方式让交互的数据不收限制。

        最近几年PLC通信用的较多了,自认为比较熟悉了,本项目机器人与PLC的通信方式就采用了MODBUSTCP.

        这里需要提示下,发那科机器人目前常见的通信协议都支持,唯独MODBUSTCP是免费的。。。

        好了言归正传,能够让发那科机器人与汇川EasyPLC通过MODBUSTCP方式进行通信,我们需要了解PLC的通信配置,机器人的通信配置,机器人通信IO的分配(每个品牌的工控设备对于MODBUS对应自身寄存器的分配均不一样,但都会遵循MODBUS的协议)。

Modbus协议是应用于电子控制器上的一种通用语言,通过此协议,控制器相互之间、控制器与其它设备之间都可进行通讯,此协议是请求/应答的协议,采用主从通讯模式,Modbus支持RS-232、RS-422、RS-485和Ethernet设备。Modbus主要包含Modbus TCP、Modbus RTU与Modbus ASCII三种,本篇文章采用Modbus TCP作为主要讲解内容,其余两者使用的是RS-串口通讯,在报文、数据帧上略有不同。

Modbus TCP本篇文章只涉及I/O信号的读写。

一、Modbus TCP数据的组成                 (此处只做简单介绍,部分内容也是借鉴于网络)

1、Modbus TCP = 表头 + 功能码 + 数据区  方便简写:RO-只读,WO-只写,RW-读写

表1-1 MPAB(报文头)

名称  

标识  

标志协议  

长度  

单元标识符  

字节  

2 Byte  

2 Byte  

2 Byte  

1Byte  

含义  

报文序号(任意)  

固定为00 00  

数据位长度  

设备地址  

 表1-2 PDU(帧结构)

功能代码  

功能码  

对应机器人  

单位权限  

01  

线圈寄存器读取  

1位RO  

02  

分离输入寄存器读取  

1位RO  

03  

保持寄存器读取  

16位RO  

04  

输入寄存器读取  

16位RO  

05  

线圈寄存器写入(1Bit)  

1位WO  

06  

保持寄存器写入(1Bit)  

1位WO  

16  

多保持寄存器写  

16位WO  

23  

多保持寄存器读写  

16位RW

 2、MODBUS功能码简单介绍

线圈寄存器:开关量,支持读也支持写,写在功能码里面又分为写单个线圈寄存器和写多个线圈寄存器。对应上面的功能码:01、05

离散输入寄存器:相当于线圈寄存器的只读模式,他也是每个bit表示一个开关量,而他的开关量只能读取输入的开关信号,功能码:02

保持寄存器:单位为两个byte,可以存放具体的数据量,并且可读写。比写也分为单个写和多个写,功能码有对应的三个:03、06、16、23

输入寄存器:和保持寄存器类似,只支持读。一个寄存器也是占据两个byte的空间。类比我我通过读取输入寄存器获取现在的AD采集值。对功能码:04

表1-3 数据位组成结构

MPAB  

PDU  

请求  

标识  

Modbus  

长度  

设备地址  

功能  

起始地址  

点数  

字节数  

2  

2  

2  

1  

1  

2  

2  

响应  

标识  

Modbus  

长度  

设备地址  

功能  

字节数  

数据1  

....  

数据2  

字节数

2  

2  

2  

1  

1  

1  

1  

1  

 3、发那科机机器人IO地址范围,目前使用后的结论,此对应内容基本用不到。

表1-4 发那科机器人地址范围

离散输入寄存器

地址  

Robot I/O  

0  

DO[1]  

1  

DO[2]  

2  

DO[3]  

...  

...  

线圈寄存器  

0  

DI[1]  

1  

DI[2]  

2  

DI[3]  

...  

...  

保持寄存器  

0  

DI[1] - DI[16]  

1  

DI[17] - DI[32]  

2  

DI[33] - DI[48]  

...  

...  

保持寄存器  

10000(RO)  

DI[17] - DI[32]  

10001(RO)  

DI[33] - DI[48]  

10002(RO)  

...  

二、通讯测试  

二(1)Modbus TCP机器人只能作为服务端,在进行测试时需要对机器人进行网络配置:

通信配置打开步骤:>>点击菜单MENU>>选择设置>>选择主机通信>>确认ENTER >>进入通信设定界面>>给机器人设定自己规划的IP地址即可。其他项根据需要选择设定。

二(2)Modbus TCP配置   依次按下  MENU - IO - Modbus TCP进入tcp配置界面: 

二(3)机器人IO分配   依次按下  MENU - IO - 数字  进入IO监控配置界面-按下分配进入IO分配界面-利用IN/OUT进行切换DI和DO。

第4栏  状态  显示黄色PEND  代表配置正常,需要系统重新启动。状态显示ACTIV表示激活中。

二(4)利用ModbusPoll测试工具  进行ModbusTcp/IP测试读取数据,这里我已经配置了机器人组通信(一个组==16个位),就没有测试单个的IO读写,其他的需求小伙伴们自己动手测试吧。

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有